
(async () => {  

    //获取目录数据的函数
    async function fetchMdInfo() {
        try {
            // 发送GET请求到/md_info
            let response = await fetch('/md_info');
     
            // 检查响应是否成功（状态码在200-299之间）
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
     
            // 解析响应为JSON格式
            let data = await response.json();
     
            // 将数据保存到全局变量zz中
            window.md_info = data;
     
        } catch (error) {
            // 处理请求或响应解析过程中可能出现的错误
            console.error('Error fetching data:', error);
        }
    }
    //获取md内容的函数
    async function fetchMdFile(dir_id,file_id) {
        try {
            // 发送GET请求
            let response = await fetch(`/md_file?dir_id=${dir_id}&file_id=${file_id}`);
     
            // 检查响应是否成功（状态码在200-299之间）
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
     
            // 读取响应为文本（假设服务器返回的是纯文本）
            window.md_file = await response.text();
     
        } catch (error) {
            // 处理请求或响应过程中可能出现的错误
            console.error('Error fetching string:', error);
        }
    }
    //开始获取目录数据

    console.log("开始获取数据",window.md_info)
    await fetchMdInfo();
    console.log("获取数据完成",window.md_info)
    
    
    
    new Vue({
        el: '#app',
        data: {
            categories: JSON.parse(JSON.stringify(md_info)),
            md_datas:{},
            now_select_md_id:0,
            selectedCategory: 0,
            selectedDocument: 0,
            compiledMarkdown: ''
        },
        mounted() {
    
                // 配置 marked 使用 highlight.js 进行代码高亮
                marked.setOptions({
                    highlight: function (code, lang) {
                        let validLanguage = hljs.getLanguage(lang) ? lang : 'plaintext';
                        return hljs.highlight(validLanguage, code).value;
                    }
                });
            this.selectDocument(this.selectedCategory, this.selectedDocument);
        },
        methods: {
            selectCategory(index) {
                this.selectedCategory = index;
                this.selectDocument(index, 0);
            },
            selectDocument:async function(dir_id, file_id) {
                if(!this.md_datas[dir_id]){this.md_datas[dir_id]={};}
                if (!this.md_datas[dir_id][file_id]){
                    await fetchMdFile(dir_id,file_id);
                    this.md_datas[dir_id][file_id]=window.md_file;
                }
                this.now_select_md_id=file_id;
                // 使用 marked 将 Markdown 转换为 HTML
                let htmlContent = marked(this.md_datas[dir_id][file_id]);
                // 将转换后的 HTML 插入到页面中
                this.compiledMarkdown = htmlContent;
            }
        }
    });
    
    
    })();